package io.renren.modules.projectinfo.service;

import io.renren.common.utils.R;
import io.renren.modules.projectinfo.entity.ProjectinfosCustomEntity;
import io.renren.modules.projectinfo.entity.ProjectinfosEntity;

import java.util.List;
import java.util.Map;

/**
 * 
 * 
 * @author 黄清
 * @email
 * @date 2018-10-18 15:20:31
 */
public interface ProjectinfosService {
	//软删除项目
	int apiSoftDelete(Map<String, Object> map);

	//查询我的项目
	List<ProjectinfosCustomEntity> queryApiMyList(Map<String, Object> map);
	//查询我的项目总数量
	int queryApiMyTotal(Map<String, Object> map);

	//删除用户所有项目
	int deleteByUser(String[] createuser);

	//修改浏览次数
	int addViewTimes(String projectinfoid);

	//修改收藏次数
	int addCollectTimes(String projectinfoid);

	//减一收藏次数
	int minusCollectTimes(String projectinfoid);

	//删除
	int apiDeletes(Map<String, Object> map);

	//查询项目进度
	int queryProgress(String projectinfoid);

	//查询项目简单信息总数
	int queryDescTotal(Map<String, Object> map);

	//查询项目简单信息
	List<ProjectinfosCustomEntity> queryDescList(Map<String, Object> map);

	//api
	//查询项目简介列表
	List<ProjectinfosCustomEntity> queryApiList(Map<String, Object> map);

	//查询项目详细信息
	ProjectinfosCustomEntity queryApiInfo(String projectinfoid);

	//查询项目列表总数
	int queryApiTotal(Map<String, Object> map);

	//发布项目
	 void releaseApiProject(ProjectinfosEntity projectinfosEntity);

	//修改项目
	void updateApiProject(ProjectinfosEntity projectinfosEntity);

	//判断用户是否拥有此项目
	R isProjectExistByUser(Map<String, Object> params);

	//查询审核看到的信息
	List<ProjectinfosCustomEntity> queryAuditList(Map<String, Object> map);

	//审核项目
	int auditProject(ProjectinfosEntity projectinfos);

	ProjectinfosCustomEntity queryAuditInfo(String projectinfoid);

	int queryAuditTotal(Map<String, Object> map);
	
	ProjectinfosEntity queryObject(String projectinfoid);

	ProjectinfosCustomEntity queryCustomInfo(String projectinfoid);
	
	List<ProjectinfosEntity> queryList(Map<String, Object> map);

	List<ProjectinfosCustomEntity> queryCustomList(Map<String, Object> map);
	
	int queryTotal(Map<String, Object> map);
	
	void save(ProjectinfosEntity projectinfos);
	
	void update(ProjectinfosEntity projectinfos);
	
	void delete(String projectinfoid);
	
	void deleteBatch(String[] projectinfoids);

	//项目存在判断（包含软删除，软删除了即不存在）
    R isProjectIdExist(String projectinfoids);

    //判断项目（项目审核通过判断）
    R judgeProjectAuditSucceed(String projectinfoid);

    //审核项目判断
    public R judgeAuditError(ProjectinfosEntity projectinfos,Long userid);

    //项目进度判断
    public R judgeProgressError(int code);

    //项目类型判断
    R judgeProjectTypeError(int code);

	//判断数据库中数据是否有效
	R judgeIsOperationProject(String projectinfoid);

	//验证软删除标识
	R judgeIsDelError(int code);

	//查询联系信息
	String queryConnectionInfo(String projectinfoid);
}
